# Questionnaire about git usage and understanding
[[Source Control]] [[Git]]
- Do you think of a git commit as:
- A patch file / diff + metadata / parents
- A snapshot of the source directory + metadata (commit message, parents)
- Both
- Something else
- When you do code reviews, do you:
- Look at the full patch (compare files in github, review view in phabricator)
- Look at individual commits / commit history
- Checkout the feature branch
- Checkout what the merge result would be
- Checkout individual commits of the feature branch
- Run the software under review manually
- Do you rebase branches before opening a pull request?
- Do you have long running feature development?
- Do you do "long" feature development in side branches?
- How often do you merge the progress of long running feature development into the main branch?
- Do you use squash merges? Fast forward merges?
- If yes, why?
- If not, why?
- Do you look at the git history?
- If so, using which tools, and in what way?
- Do you clean up your branch history before submitting a PR?
- Do you do interactive staging / selective staging (only certain hunks, etc...)?
- If so, which tools do you use?
- How often do you encounter merge conflicts?
- If you encounter merge conflicts, what is a typical conflict size?
- What techniques do you use to resolve git conflicts?
- Do you use git rerere?
- What is your current git situation:
- How many repos?
- Average repo size:
- Contributors
- Age
- Overall LOC
- Number of commits on main
- Number of merged pull requests on main
- Number of pull requests merged per week
- Pull requests:
- Average commit count in pull request
- Which source control systems did you use in the past:
- Copy folders / zip folders
- RCS
- CVS
- SVN
- Perforce
- Visual Sourcesafe
- mercurial
- arch/monotone/artisanal
- Which source control webapps/services do you use for code reviews:
- Self hosted
- Phabricator
- gitlab
- github
- bitbucket
- jetbrains upsource
- other
- How long have you been using git for?
- How well do you know git internals?
- I am a git contributor
- I implemented a git clone / I know them quite well
- I roughly know about git internals
- Not well
- Do you use additional CLI tools (git extensions, etc...) to assist you when working with source control?
- How much did you tweak your gitconfig (how many aliases, special tweaks, etc...)
- Do you help other colleagues with source control (git) issues?
- If so, what are the issues you usually encounter?
- How much git-fu do you have to apply to solve the issues?
- Do you use code style as a way to facilitate source control operations?
- What kind of merge conflicts do you most commonly have?
- Conflicts on index files like package.json or Makefile
- Conflicts on function argument lists
- Conflicts on terse one-line style code